/**
 *
 */
package com.naiterui.ehp.bs.emr.vo.patient;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.naiterui.ehp.bp.bo.emr.MedicalRecordSettingBO;
import com.naiterui.ehp.bp.utils.date.DateUtil;
import com.naiterui.ehp.bs.emr.vo.MCaseFileImgVO;
import com.naiterui.ehp.bs.emr.vo.amc.AmcResultVO;
import com.naiterui.ehp.bs.emr.vo.scale.PatientScaleVO;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @since 2.16
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "PatientCaseDetailVO", description = "病例详情VO")
public class PatientCaseDetailVO {

    @ApiModelProperty(value = "id")
    private String id;

    @ApiModelProperty(value = "医生ID")
    private Long doctorId;
    /**
     * 医生名：<code>doctorName</code>
     */
    @ApiModelProperty(value = "医生名")
    private String doctorName;

    /**
     * 医院名：<code>hosptital</code>
     */
    @ApiModelProperty(value = "医院名")
    private String hospitalName;

    /**
     * 科室：<code>department</code>
     */
    @ApiModelProperty(value = "科室名称")
    private String departmentName;

    @ApiModelProperty(value = "填写来源：1-医生邀请填写；2-自己添加; 3-医生推送;4-线上诊室病历;5-患者填写量表")
    private Integer source;



    @ApiModelProperty(value = "对应医生病历ID")
    private String drRecordId;

    @ApiModelProperty(value = "家庭成员姓名")
    private String name;

    @ApiModelProperty(value = "家庭成员性别")
    private Integer gender;

    @ApiModelProperty(value = "家庭成员年龄")
    private String age;

    @ApiModelProperty(value = "和本人关系:0：父亲；1：母亲；2：兄弟姐妹；3：子女；4：丈夫；5：妻子；6：本人；7：其他家庭成员 ")
    private Integer member;

    @ApiModelProperty(value = "哺乳或怀孕状态:1-哺乳中；2-怀孕中；3-不知道；4-都不是")
    private Integer pregnancy;
    /**
     * <身高>
     */
    @ApiModelProperty(value = "身高")
    private Integer height;
    /**
     * <体重>
     */
    @ApiModelProperty(value = "体重")
    private Integer weight;
    /**
     * 病情描述
     */
    @ApiModelProperty(value = "病情描述")
    private String description;
    /**
     * amc诊断id
     */
    @ApiModelProperty(value = "amc诊断id")
    private String amcId;
    /**
     * amc诊断结果
     */
    @ApiModelProperty(value = "amc诊断结果")
    private AmcResultVO amcResult;
    /**
     * <过敏药物>
     */
    @ApiModelProperty(value = "药物过敏史")
    private MSelectOrOthersVO medicAllergys;
    /**
     * <过往病史>
     */
    @ApiModelProperty(value = "既往病史")
    private MSelectOrOthersVO pastDiseases;
    /**
     * <家族病史。数组size=0标识无家族病>
     */
    @ApiModelProperty(value = "家族病史")
    private List<MFamilyDiseaseVO> familyDiseases;
    /**
     * <遗传病>
     */
    @ApiModelProperty(value = "遗传病史")
    private MSelectOrOthersVO hereditaryDiseases;
    /**
     * <吸烟情况>
     */
    @ApiModelProperty(value = "吸烟情况")
    private MSmokeVO smoke;

    /**
     * <饮酒情况>
     */
    @ApiModelProperty(value = "饮酒情况")
    private MDrinkVO drink;

    @ApiModelProperty(value = "就诊时间")
    private Long vistingTime;

    @ApiModelProperty(value = "病例完成时间")
    private Long finishTime;

    @ApiModelProperty(value = "病例完成时间,Date格式")
    @JsonFormat(pattern = DateUtil.DATE_TIME_FORMAT)
    private Date finishTimeDate;

    /**
     * 医嘱图片列表：<code>adviceList</code>
     */
    @ApiModelProperty(value = "医嘱图片列表")
    private List<MCaseFileImgVO> adviceList = new ArrayList<>();
    /**
     * 处方单图片列表：<code>prescriptionList</code>
     */
    @ApiModelProperty(value = "处方单图片列表")
    private List<MCaseFileImgVO> prescriptionList = new ArrayList<>();
    /**
     * 检验单图片列表：<code>checkList</code>
     */
    @ApiModelProperty(value = "检验单图片列表")
    private List<MCaseFileImgVO> checkList = new ArrayList<>();

    @ApiModelProperty(value = "病例图片集合")
    private List<MCaseFileImgVO> imgList = new ArrayList<>();

    @ApiModelProperty(value = "医生推送患者病例信息、线上诊室病历（拼装成医生病历模板）")
    private DoctorMedicalRecordVO doctorMedicalRecord;

    /**
     * 签名信息
     */
    @ApiModelProperty("签名信息")
    private SignInfoVO signInfo;

    @ApiModelProperty(value = "患者填写的金数据表单")
    private PatientScaleVO patientScale;

    /**
     *
     * 病历设置
     */
    @ApiModelProperty(value = "病历设置")
    private List<MedicalRecordSettingBO> medicalRecordSettingList;

}
